package com.jason.kotlin.gank.repository

import com.jason.kotlin.gank.model.GankApiResponse
import com.jason.kotlin.gank.model.GankBannerBean
import com.jason.kotlin.gank.model.GankCategoryBean
import com.jason.kotlin.gank.model.GankDataBean

interface GankApi {

    suspend fun loadBanners(): GankApiResponse<List<GankBannerBean>>

    suspend fun loadWeekHotData(
        type: String,
        category: String,
        count: Int
    ): GankApiResponse<List<GankDataBean>>

    suspend fun loadWeekHotGanHuoWithViews(): GankApiResponse<List<GankDataBean>>


    suspend fun loadCategoryData(
        category: String, type: String, page: Int, count: Int
    ): GankApiResponse<List<GankDataBean>>

    suspend fun loadGirlData(page: Int): GankApiResponse<List<GankDataBean>>

    suspend fun getRandomData(
        category: String?, type: String?, count: Int
    ): GankApiResponse<List<GankDataBean>>


    suspend fun getCategoriesGanHuo(): GankApiResponse<List<GankCategoryBean>>

    suspend fun getCategoriesArticle(): GankApiResponse<List<GankCategoryBean>>

    suspend fun getSearchData(
        keyword: String?,
        page: Int,
        count: Int
    ): GankApiResponse<List<GankDataBean>>

    suspend fun getArticleDetail(postId: String
    ): GankApiResponse<List<GankDataBean>>
}